package com.itheima.innerclass_demo.anonymous_innerclass;

/*
     以匿名对象的方式使用
        1 直接调用方法使用
        2 当做方法的参数传递
        3 当做方法的返回值使用

 */
public class Test3 {
    public static void main(String[] args) {
        //  1 直接调用方法使用 , 了解!
        Flyable flyable = new Flyable() {
            @Override
            public void fly() {
                System.out.println("飞飞...");
            }

            public void show() {
                System.out.println("show方法");
            }
        };

        // 2 当做方法的参数传递 !!!
        useFlyable(new Flyable() {
            @Override
            public void fly() {
                System.out.println("飞飞飞...");
            }
        });
    }

    public static void useFlyable(Flyable flyable) {
        flyable.fly();
    }

    public static Flyable getFlyable() {
        // 3 当做方法的返回值使用 !!
        return new Flyable() {
            @Override
            public void fly() {
                System.out.println("飞飞飞...");
            }
        };
    }
}

//接口
interface Flyable {
    public abstract void fly();
}

